home *** CD-ROM | disk | FTP | other *** search
-
- AskEnv 2.5 23-Mar-93
- ==========
-
-
- Wozu dient AskEnv?
- ------------------
-
- Der einzige Befehl von AmigaDos zur Eingabe von Daten ist der ASK-Befehl.
- Seit der Veröffentlichung von OS2 ist ARexx ein Bestandteil des
- Betriebssystems. Dieser Sprache fehlen aber ebenfalls Befehle für die
- Kommunikation mit dem Benutzer, die über Zeile schreiben und lesen
- hinausgehen. Kein Wunder, denn die Sprache stammt von IBM-Grossrechnern
- mit Zeichenterminals.
-
- Mit AskEnv werden diese Eingabemöglichkeiten erweitert. AskEnv ermöglicht
- ARexx-Programmen, Shell-Scripts, Superbase DML-Programmen und allen anderen
- Sprachen, die ein externes Programm aufrufen und eine Datei einlesen können,
- einen einfachen Aufruf von System-, File- und frei definierbaren Requestern.
-
- AskEnv braucht mindestens OS 2.04.
-
-
- Aufruf:
- -------
-
- Der Programmstart ist nur aus dem CLI sinnvoll (oder ARexx, Superbase...):
-
- AskEnv [EOL/S,F=FREQ/S,DEF/K,SBMODE/S,S=SREQ/K,BODY/K,NEG/K,POS/K,GADFILE/K]
-
- AskEnv ist pure, kann also resident geladen werden.
-
-
-
- Funktionen
- ==========
-
- Es gibt zwei Klassen von Funktionen in Askenv: einfache, bei denen sich
- der Aufwand für die Eingabe auf die Argumente in der Kommandozeile
- beschränkt. Komplexe Funktionen hat es nur eine: mit einem Konfigurations-
- File kann ein frei definierbarer Requester gebastelt werden.
-
-
- einfache Funktionen
- -------------------
-
- Zeile lesen
- -----------
-
- AskEnv [>datei] [EOL]
-
- Im Shell-Fenster wird eine Zeile von der Tastatur gelesen bis zum
- Zeilenende, der Text wird in die Standardausgabe geschrieben. Mit EOL kann
- bei allen einfachen Funktionen ein Zeilenende an den Text gehängt werden.
- (Mit dieser Funktion fing alles einmal an!)
-
-
- File-Requester
- --------------
-
- AskEnv [>datei] FREQ Titel [DEF pfad] [DIR] [SBMODE] [EOL]
-
- ruft einen File-Requester mit "Titel" in der Titelzeile auf. Mit DEF kann
- ein Pfad zu einer Datei oder Verzeichnis vorgegeben werden. Mit DIR wird der
- Requester auf eine Verzeichnisauswahl beschränkt; Dateien werden dann nicht
- angezeigt.
-
- WARNUNG: Wenn der File Requester von SBPro aus gestartet wird, muss die
- Option SBMODE verwendet werden, sonst hängt der Requester. Dies ist ein Bug
- in SBPro: es mag es gar nicht, wenn man auf sein Fenster zugreift um den
- Screen zu bestimmen, auf dem es läuft.
-
-
- System-Requester
- ----------------
-
- AskEnv SREQ Zeile1 [BODY Zeile2] POS posiKnopf [NEG negaKnopf]
-
- Wird der negative Text gewählt, wird ein Fehlercode WARN zurückgegeben.
-
-
-
- komplexe Requesterfunktionen
- ----------------------------
-
- Mit "AskEnv gadfile <file>" kann eine Beschreibung eines Requesters gelesen
- werden, ein unstrukturiertes ASCII-File mit Schlüsselwörtern. Die Elemente
- können beliebig auf Zeilen verteilt werden.
-
- Strings müssen auf einer Zeile liegen und mit " " einrahmt werden, wenn sie
- Leerzeichen enthalten.
-
- Mit ";" werden Kommentare eingeleitet. Schlüsselwörter müssen gross
- geschrieben werden.
-
-
- IMMEDIATE vs SELECT-Modus
- -------------------------
-
- Askenv wählt sich einen von 2 Modi, abhängig von den definierten Gadgets.
-
- IMMEDIATE Requester verschwindet nach der ersten Berührung;
- die ID des Gadgets wird in die Variable VAR, die im
- Header genannt wird, geschrieben. Ist kein Name unter
- VAR angegeben, wird die Variable "AskEnv_Button"
- verwendet.
- Die ID des Buttons ist die Nummer in der Reihenfolge
- der Definitionen, beginnend mit 1.
-
- SELECT bleibt, bis ein END-, CANCEL- oder das Close-Gadget
- gewählt wird. Dann werden die Zustände aller Gadgets
- rausgeschrieben.
-
- In beiden Fällen bewirkt das Close-Gadget einen WARN-Error und
- nichts wird geschrieben. Variablenwerte sind also nicht definiert!
- Meistens bleiben sie auf den vorherigen Werten, die können aber durch
- andere Programme verändert worden sein!
-
- Der Modus wird automatisch ermittelt:
-
- Nur Buttons werden als "IMMEDIATE" behandelt. Wenn Nicht-Buttons
- dazukommen, wird auf "SELECT" geschaltet. Zu den Nicht-Buttons
- gehören auch Buttons mit File-Requester- oder Programmstart-
- Funktionen.
-
- Elemente mit Read-only werden dabei nicht beachtet.
-
-
- Konfigurations-File
- -------------------
-
- Das File besteht aus einem Header und beliebig vielen Gadget-Definitionen.
-
- Im Header stehen die globalen Eigenschaften:
-
- WINDOW : dieses Schlüsselwort muss am Anfang des Files stehen.
-
- SIZE x y w h : durch Spaces getrennt; bin nicht verantwortlich für
- sinnvolle Koordinaten.
-
- Als Alternative:
-
- CENTER w h : Zentriert den Requester auf dem Bildschirm.
-
- NAME name : Fenstername, optional
-
- SCREEN screen : screen ist der Name eines Public-Screens, auf dem sich der
- Requester öffnen soll. Ist kein Public-Screen dieses
- Namens vorhanden, wird der Default Public Screen (meist die
- Workbench) verwendet.
-
- VAR name : Im Immediate-Modus, dh. wenn nur Buttons vorhanden sind,
- wird die Nummer des Buttons rausgeschrieben.
-
- Im Select-Modus wird ebenfalls die Nummer des gewählten
- Buttons hier reingeschrieben, dies aber nur, wenn das
- Schlüsselwort GLOBAL dabei steht! GLOBAL kann auch ohne
- Variablenname verwendet werden, es darf dann nur nicht vor
- dem abschliessenden "#" stehen.
-
- Wurde kein Name unter VAR angegeben, so wird in die
- Variable "AskEnv_Button" geschrieben.
-
-
- Achtung: ab Version 2.4 kann mit VAR keine Datei mit allen Variablen mehr
- erzeugt werden. Das war ein Ueberbleibsel aus frühen Tagen, für das wohl
- kaum mehr Bedarf besteht. Falls erwünscht, kann ich es ja wieder hinein-
- nehmen.
-
-
- Nach dem Header folgen die Gadget-Definitionen:
-
- Ein Gadget beginnt mit einem Schlüsselwort und endet mit " #" (wie die
- MountList).
- Zur Zeit werden folgende Gadget-Typen unterstützt:
-
- BUTTON in verschiedenen Funktionen
- CHECKBOX
- INTEGER nur zur Vollständigkeit
- NUMBER readOnly
- CYCLE
- STRING
- MX
- TEXT readOnly
-
- HIBOX hervorstehender Rahmen
- LOBOX vertiefter Rahmen
-
- Ausserdem können ein Button- und ein String-Gadget zu einem File-Requester-
- Aufruf kombiniert werden und über den Buttontyp Programme aufgerufen
- werden.
-
-
- Funktionen für alle Gadgets:
- ----------------------------
-
- POSITION x y w h: obligatorisch für alle. Die minimale Höhe der Gadgets
- richtet sich nach der Höhe des Screenfonts.
-
- LABEL text : Gadgettext, voreingestellt IM Gadget, kann mit...
-
- PLACETEXT ort : noch gesetzt werden: ABOVE, BELOW, LEFT, RIGHT
-
- END : Dieses Gadgets bricht den Requester ab. Kann bei
- mehreren Gadgets eines Fensters verwendet werden.
-
- CANCEL : Abbruch des Requesters. Nichts wird geschrieben.
-
- GLOBAL var
- LOCAL var : in diese entweder lokale oder globale (ENV:) Variable wird
- der Wert dieses Gadgets geschrieben. Was genau geschrieben
- wird, ist vom Typ abhängig.
-
- ENTRY : Falls verwendet, MUSS es am Schluss einer Definition
- stehen. Danach folgen 1 bis n Einträge, abhängig vom Typ.
-
-
- Spezielles zu den Typen:
- ------------------------
-
- BUTTON
- ------
-
- Zurückgegeben wird im IMMEDIATE-Modus die Nummer des Buttons in der im
- Header definierten globalen Variable. Nur Buttons und in Reihenfolge der
- Definition abzählen!!
- Im SELECT-Modus wird die Nummer in die Variable "AskEnv_Button" geschrieben,
- aber nur von Buttons, die das Schlüsselwort GLOBAL zusammen mit einer Dummy-
- Variablen enthalten.
-
-
- Spezialfunktionen für BUTTONs:
-
- FREQ : Als nächstes Gadget muss eine String-Gadget-Definition
- folgen, in das ein voreingestellter Pfad mit ENTRY
- geschrieben werden kann. Die Wahl des Buttons aktiviert
- dann einen File-Requester, dessen Auswahl zurück ins
- String-Gadget geschrieben wird.
-
- DIR : Zusatzoption für Filerequester: der Requester wird auf eine
- Verzeichnisauswahl beschränkt; Dateien werden dann nicht
- angezeigt. Kann bei gewissen ASL-Ersatzrequestern versagen
- (z.B. MFR).
-
- SYNCRUN : Die Zeichenfolge, die diesem Schlüsselwort folgt, wird
- als Programm synchron gestartet. AskEnv schaltet sein
- Fenster solange ab, bis das externe Programm beendet
- worden ist. Enthält das Kommando Argumente oder Optionen,
- die mit Leerzeichen abgetrennt werden, muss der Befehl
- in Anführungszeichen stehen!
-
- Der Returncode des aufgerufenen Programms kann bei synchron
- gestarteten Programmen weiterverwendet werden:
-
- WARN limit : mit einer Zahl limit kann festgelegt werden, bis zu welchen
- Fehlerlevel ohne eine Benachrichtigung des Benutzers fort-
- gefahren werden kann. Ist der Returncode grösser als limit,
- öffnet sich ein Requester mit der Option zum Programm-
- abbruch. AskEnv gibt darauf einen Returncode von 10 weiter.
-
- ASYNCRUN : Wie bei SYNCRUN, nur dass der AskEnv-Requester nach dem
- Absetzen des Kommandos wieder zur Eingabe bereit ist. Das
- asynchron gestartete Programm ist nun unabhängig von
- AskEnv.
-
- FILE filedef : Optionales Ausgabefile für das asynchron gestartete
- Program.
- Z.B. NIL:, RAM:Test oder ein CON-Fenster.
-
- Wird ein externes Programm (synchron oder asynchron) gestartet, werden
- zuerst die Werte aller Variablen rausgeschrieben. Das aufgestartete Programm
- kann somit bereits auf Eingabewerte zb. in Filerequester-Gadgets zugreifen.
-
- Diese Werte können sofort wieder verwendet werden: SYNCRUN und ASYNCRUN-
- Kommandos dürfen Variablen enthalten. Die Definition
-
- STRING ...
- LOCAL myDir ...
-
- BUTTON ...
- SYNCRUN "dir $myDir"
-
- versucht den Inhalt des Stringgadgets als Verzeichnis zu lesen.
-
-
- CHECKBOX
- --------
-
- CHECKED : das Häkchen wird beim Start eingeschaltet.
-
- Als Funktionswert gibt das Checkbox-Gadget 0 zurück, wenn
- gewählt, sonst -1.
-
-
- INTEGER
- -------
-
- Nach ENTRY kann eine Default-Zahl angegeben werden, die beim Aufruf
- im Integer-Gadget erscheint. Mit "MAXCHARS zahl" kann die maximale Zahl
- der Zeichen, die aufgenommen werden, verändert werden (default 20).
-
-
- NUMBER
- ------
-
- Aehnlich INTEGER, aber Read-Only. Es wird nichts geschrieben.
- Mit NOBOX wird der Rahmen unterdrückt.
-
-
- STRING
- ------
-
- Aehnlich INTEGER, auch mit der Einstellmöglichkeit MAXCHARS (default 80).
-
-
- TEXT
- ----
-
- Analog zu INTEGER --> NUMBER
-
-
- CYCLE
- -----
-
- Alle gewünschten Einträge nach ENTRY auflisten. Rausgeschrieben wird die
- Nummer des zuletzt selektierten Eintrags, beginnend bei 0.
-
- Zur Erinnerung: ENTRY immer an den Schluss einer Gadgetdefinition!!.
-
-
- MX
- --
-
- Dieser Gadget-Typ wird wie ein oben erwähntes CYCLE-Gadget installiert und
- ausgewertet. Zusätzlich gibt es noch die Option
-
- SPACING n : Zusätzlicher Abstand zwischen den einzelnen Einträgen
-
-
- HIBOX, LOBOX
- ------------
-
- ACHTUNG: kein Endzeichen #, nur die vier Parameter X, Y, Breite, Höhe:
-
- HIBOX
- 50 20 100 20
-
-
- Tips und Tricks
- ===============
-
- TEXT-Typen werden normalerweise zentriert zur X-Koordinate ausgegeben. Soll
- eine Reihe von Texten linksbündig ohne Box angeordnet werden, kann dies
- mit einer Breitenangabe von 0 und der Option PLACETEXT RIGHT erreicht werden.
-
-
- Abspann
- =======
-
- Im Vertriebsverzeichnis müssen enthalten sein:
-
- LACE (dir)
- About.req intro.req
- Offset.req Select.req
- Strings.req warning.req
- HIRES (dir)
- about.req intro.req
- Offset.req Select.req
- Strings.req Warning.req
- AskEnv
- AskEnv.doc
- AskEnv.dok
- Brief.rexx
- BriefHilfe.req
- Changes.doc
- Changes.dok
- dearc.req
- DeArc.rexx
- LiesMich
- Plotter Plotter.info
- PrefMan.rexx
- ReadMe
- Test
-
-
- noch zu tun:
- ------------
-
- - AREXX Support
-
-
- Danke allen, die sich mit Tips und Tricks beteiligt haben.
-
-
- Ab V2.4 ist AskEnv mit MungWall und Enforcer gestestet, was keine grosse
- Hürde ist, da AskEnv mit M2Amiga Modula2 programmiert wurde.
-
- AskEnv wurde gestestet unter OS 2.04 und OS 2.1.
-
-
- Dieses Programm ist frei kopierbar. Das Verzeichnis muss vollständig weiter-
- gegeben werden.
-
- Die Aufnahme in PD-Serien ist erlaubt unter der Bedingung, dass eine Diskette
- für nicht mehr als 5 sFr/DM verkauft wird. Wenn die Diskette, mit der
- AskEnv erworben wurde, teurer war, bitte ich um einen Hinweis.
-
- Soll AskEnv auf Serien, die mit gedruckten Anleitungen vertrieben werden,
- veröffentlicht werden, darf dies nur nach Absprache mit dem Autor getan
- werden.
-
- Alle Rechte verbleiben beim Programmierer.
-
-
-
- Bugreports an:
-
- ============================================================================
- Bengt Giger
- Schmiedgasse 48
- CH-8640 Rapperswil
- Switzerland
- 055/27 98 79
-
- Link-CH1 ++41 (0)61 681 63 60 Aminet: B.GIGER%LINK-CH1 44:8010/408.0
- Z-Netz: B.GIGER@LINK-CH1
- ============================================================================
-